package cn.anecansaitin.industrialization_expansion.api.common.cap;

import com.google.common.collect.Multimap;
import net.minecraft.entity.ai.attributes.Attribute;
import net.minecraft.entity.ai.attributes.AttributeModifier;

/**
 * 可修改属性能力 <br/>
 * 用于为自定义工具提供可变更的属性
 */
public interface IModifiedAttribute {
    /**
     * @return 属性以及属性操作符的多映射表 <br/>
     * 不要修改获得的表
     */
    Multimap<Attribute, AttributeModifier> getAttribute();

    /**
     * @param attribute 需要设置的属性以及属性操作符的多映射表 <br/>
     *                  替换能力内的表
     */
    void setAttribute(Multimap<Attribute, AttributeModifier> attribute);

    /**
     * @param attribute 属性
     * @param modifier  属性操作符 <br/>
     *                  设置制定属性的操作符
     */
    void putAttribute(Attribute attribute, AttributeModifier modifier);

    /**
     * 清空能力保存的属性
     */
    void clear();
}
